HTTP通信を止めて書き換えるBurp Suite入門
こんにちは、臼田です。
みなさん、Webの脆弱性チェックしてますか?(挨拶
今回は、Webアプリケーションのセキュリティテストを行うための総合的なツール群であるBurp Suite(バープ スイート)に入門してみようという記事です。
そもそもBurp Suiteって何なの?というところを簡単に説明して、使い始めるところをやってみます。
この記事自体はこれからBurp Suiteを利用し始める方全般に役に立つと思いますが、私がこの記事を書いている目的は9/21に行うイベントであるとある海豹とSecurity-JAWS #01 - connpassの参加条件となるBurp Suiteをインストールし、事前に行う練習問題を完了するためのアシストをすることです。
前者の方はその点ご容赦ください。
Burp Suiteとは
そもそもBurp Suiteとな何でしょうか?
冒頭では「Webアプリケーションのセキュリティテストを行うための総合的なツール群」と記述しましたが、プロキシ・クローラ・リピータなど開発者や脆弱性診断士がウェブアプリの脆弱性を発見・検証するのに役立つ機能が揃っています。
Burp Suiteは、PortSwiggerが開発しています。有償のライセンスが必要なBurp Suite Professionalと無償で商用利用も可能なCommunity Editionがあります。今回はCommunity Editionを扱っていきます。
「Webアプリケーションのセキュリティテスト」と書かれているとハードルが高く感じられるかもしれませんが、これからやることは非常に簡単なのでやってみましょう。
Burp Suiteをインストールする
まずはBurp Suiteをダウンロードしてインストールします。公式の手順はBurp Suite Professional / Community Editionのインストールで、ダウンロードリンクもこちらにあるのでまずはこれを開きます。開いたら少し下に「ステップ1: ダウンロードする」とあるので「COMMUNITY EDITION」を選びます。
ダウンロード画面に移動するので、OSやCPUアーキテクチャの選択肢を自身の環境に合ったものにして「DOWNLOAD」を押します。するとインストーラーがダウンロードされます。
ダウンロードできたらインストールしましょう。私の環境ではMacなので、一般的なMac上のアプリのインストール手順通り、dmgファイルを開き(マウントし)開いたウインドウの中にあるappファイルをApplicationにドラッグ・アンド・ドロップ(複製)します。Windows環境でもおそらく一般的な操作になるでしょう。
Burp SuiteでHTTP通信を書き換えよう
ではいよいよ本題のBurp Suiteを利用してHTTPの通信を書き換えるところをやってみましょう。イベントに参加するために練習問題をしている方は、練習問題のテキストも合わせて参照してください。
まずBurp Suiteを起動します。起動すると最初のウインドウではプロジェクトを開く画面になります。プロジェクトはProfessionalの機能なので利用できないため、気にせず「Next」を押します。
続いてどの設定を読み込むか確認する画面です。初めてで読み込む設定も無いので、そのまま「Start Burp」を押します。
無事起動できました。それではHTTPの通信を止めて書き換えてみます。このあたりの手順は公式ではBurp ProxyによるHTTPトラフィックのインターセプトに書かれています。
まず、上部のタブから「Proxy」を開きます。ここがプロキシを利用する画面です。Burp SuiteではChromiumベースのBurpブラウザがデフォルトで付いているので、「Open browser」を押してこのブラウザを起動します。Burpブラウザを利用したHTTPの通信をBurp Suiteのプロキシ経由で行うようにします。
余談ですが、実は昔は組み込みのブラウザが無く、Burp Suiteを利用し始めるときには既存のブラウザに対してBurpをプロキシに指定する設定をしたり、Burpの証明書を追加でインストールするなどセットアップがけっこう大変でした。現在はBurp Suite1つで完結するので非常にセットアップが簡単です。
Burpブラウザが立ち上がったらテスト用のページを開きましょう。Burp公式の手順では https://portswigger.net
を開くとなっています。イベント参加者は練習問題の資料にあるURLを利用してください。BurpブラウザのURL欄に入力してエンターを押します。
ブラウザでは該当のページが開かれます。Burp SuiteではHTTP通信の履歴が確認できます。「Proxy」タブの下にある「HTTP history」タブを開きます。すると、履歴が確認できるので適当に選んでみましょう。ウインドウ下部にリクエストとレスポンスが確認できました。
履歴が確認できたところで、今度は通信を止めて書き換えてみましょう。公式の手順ではBurp Proxyによるリクエストの変更を参照してください。
「Proxy -> Intercept」タブに戻り「Intercept off」となっているボタンを押し「Intercept on」に切り替えます。これでプロキシを通るHTTP通信はすべてBurp Suiteが一時的に止めます。
では実際に止めてみます。手順通りリクエストを送ってみましょう。するとブラウザはそのまま止まり、Burp Suiteでは止めた通信が表示され、リクエストの内容が書き換えられるようになります。適当に書き換えた後は「Forward」ボタンを押すと、そのHTTP通信は書き換えた状態で送信されます。
一旦用事が済んだので「Intercept off」に切り替えます。
履歴を確認するため「Proxy -> HTTP history」へ移動します。新しい履歴を確認すると、元々のリクエストと書き換えたリクエストに対するレスポンスが表示されています。
書き換えたリクエストを確認するには「Original request」の右側にある∨を押すと「Edited request」に切り替えできます。
これでHTTPの通信を止めて書き換えることができました。そして更にいろんなリクエストを試していく時に便利なリピーターも使ってみましょう。
リクエスト側のウインドウ内で右クリックします。メニューの中に「Send to Repeater」があるので押してあげましょう。するとこのリクエストの内容をリピーターに送ることができます。
「Repeater」タブを開いてみましょう。先ほど送ったリクエストが入っています。また適当に書き換えて「Send」してみましょう。すると右側にResponseが表示されます。この画面では繰り返し書き換えながら送ることができるので、試行錯誤するのに役立ちます。
まとめ
Burp Suiteを利用してHTTPの通信を止めて書き換えてみました。
簡単に利用できるので是非活用していきましょう。